#include<iostream>
using namespace std;
#include<cstring>

/*引用
*1.定义：是给一个已经定义的变量重新起一个别名。
	（引用与原始变量表示同一个内存空间）(类似于指针)
*2.写法：数据类型 &引用名 = 变量名。(即 int &c; 是错误的)
*3.定义引用时必须同时初始化。
 4.已经定义的引用，不能再成为别的变量的引用。
   即 若变量b是a的引用，则b不能再同时成为c的引用。
 5.不能创建数组的引用，只能创建数组元素的引用。
 6.应用：
   *a.引用做函数参数---地址传递；
    b.引用做函数的返回值；
*/

/*
int &fun(int &c)//返回引用类型的函数，可以自加 也可以赋值。
{
	c = 10;
	return c;
}

int main()
{
	int a = 4;
	fun(a);
	cout<<"a="<<a<<endl;
	int &b = a;//b是a的引用
	b = 5;//改变b,本质上改变的是a的值
	cout<<"b="<<b<<endl;
	cout<<"a="<<a<<endl;
	
	int d = 1;
	fun(d);
	cout<<"d="<<d<<endl;
	fun(d)++;
	cout<<"d="<<d<<endl;
	fun(d)=15;
	cout<<"d="<<d<<endl;
	
	int m[5]={0};
	int &n = m[0];
	return 0;
}
*/

/*const &（const 引用）
1.对常量进行引用，只能读不能修改。
2.可以对不同数据类型进行引用，只能读不能修改。
*/

/*int main()
{
	int a = 3;
	int &b = a;
	
	const int &c = 3;
	
	float n = 3.14;
	const int &m = n; //m的值为3；n的值为3.14
	cout<<m;
	return 0;
}*/

